package com.hejia.alauda.service;

import java.util.List;

import com.hejia.alauda.entity.Fund;
import com.hejia.alauda.entity.UserFundInfo;
import com.hejia.alauda.entity.example.FundExample;
import com.hejia.alauda.exception.BusinessException;
import com.hejia.alauda.utils.Pager;

/**
 * 
 * 爱基金接口
 *
 *
 * Created by showone on 2015 上午11:23:36.
 *
 * @Copyright: 2015 www.hejiajinrong.com All rights reserved.
 */
public interface FundService {
	/**
	 * 将用户账号与基金账号进行关联
	 * 
	 * @param userId
	 *            用户ID
	 * @param custId
	 *            基金账号
	 * @param token
	 *            token值
	 * @param phoneNum
	 *            手机号码
	 * @return
	 */
	public boolean relateToFund(Long userId, String custId, String token,
			String phoneNum) throws BusinessException;

	/**
	 * 购买基金
	 * 
	 * @param userId
	 *            用户ID
	 * @param custId
	 *            基金账号
	 * @param fundCode
	 *            基金代码
	 * @param fundName
	 *            基金名称
	 * @param confirmedVol
	 *            购买金额
	 * @param acceptTime
	 *            申请时间
	 * @param confirmflagName
	 *            确认标志名称
	 * @param checkflagname
	 *            检查标志名称
	 * @param confirmTime
	 *            预计确认时间
	 * @return
	 */
	public boolean buy(Long userId, String custId, String fundCode,
			String fundName, String confirmedVol, String acceptTime,
			String confirmflagName, String checkflagname, String confirmTime)
			throws BusinessException;

	/**
	 * 赎回基金
	 * 
	 * @param userId
	 *            用户ID
	 * @param custId
	 *            基金账号
	 * @param fundCode
	 *            基金代码
	 * @param fundName
	 *            基金名称
	 * @param confirmedVol
	 *            赎回份额
	 * @param acceptTime
	 *            申请时间
	 * @param confirmflagName
	 *            确认标志名称
	 * @param checkflagname
	 *            检查标志名称
	 * @param confirmTime
	 *            预计资金到账时间
	 * @return
	 */
	public boolean redemption(Long userId, String custId, String fundCode,
			String fundName, String confirmedVol, String acceptTime,
			String confirmflagName, String checkflagname, String confirmTime)
			throws BusinessException;

	/**
	 * 根据用户id获取用户基金账户信息
	 * 
	 * @param id
	 * @return
	 */
	public UserFundInfo getUserFundInfoByUserId(Long id);

	/**
	 * 查询所有基金管理
	 * 
	 * @param pager
	 * @return
	 */
	public Pager<Fund> findAllFund(Pager<Fund> pager);

	/**
	 * 查询所有基金管理
	 * 
	 * @param pager
	 * @param example
	 * @return
	 */
	public Pager<Fund> findAllFund(Pager<Fund> pager, FundExample example);

	/**
	 * 保存基金管理
	 * 
	 * @param fund
	 * @return
	 */
	public boolean saveFund(Fund fund);

	/**
	 * 根据ID获取基金管理
	 * 
	 * @param id
	 * @return
	 */
	public Fund getFundById(Long id);

	/**
	 * 购买人数
	 * 
	 * @param fundcode
	 * @return
	 */
	public int buyNumber(String fundcode);

	/**
	 * 根据基金编码获取基金管理
	 * 
	 * @param fundcode
	 * @return
	 */
	public Fund getFundByFundcode(String fundcode);

	/**
	 * 修改基金管理
	 * 
	 * @param fund
	 * @return
	 */
	public boolean modifyFund(Fund fund);

	/**
	 * 删除基金管理
	 * 
	 * @param id
	 * @return
	 */
	public boolean deleteFund(Long id);

	/**
	 * 查询所有基金管理
	 * 
	 * @return
	 */
	public List<Fund> getFundList();

	/**
	 * 活动上架
	 *
	 * @param id
	 *            id
	 * @return boolean
	 */
	boolean upFund(Long id);

	/**
	 * 活动下架
	 *
	 * @param id
	 *            id
	 * @return boolean
	 */
	boolean downFund(Long id);

	/**
	 * 暂停销售
	 *
	 * @param id
	 *            id
	 * @return boolean
	 */
	boolean stopFund(Long id);
}
